import axios from 'axios'
import {Message} from 'element-ui'
import router from '@/router/index'
import {localGet, localSet} from './index'
import {getBaseUrl} from './envi'

// 这边由于后端没有区分测试和正式，姑且都写成一个接口。
axios.defaults.baseURL = getBaseUrl()
// 携带 cookie，对目前的项目没有什么作用，因为我们是 token 鉴权
axios.defaults.withCredentials = true
// 请求头，headers 信息
axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'
axios.defaults.headers.token = localGet('token') || ''
// 默认 post 请求，使用 application/json 形式
axios.defaults.headers.post['Content-Type'] = 'application/json'

// 请求拦截器，内部根据返回值，重新组装，统一管理。
axios.interceptors.response.use(res => {
    //     对于聊天接口单独处理
    if (res.config.url.includes("robotChat") || res.config.url.includes("onlineChat")) {
        console.log("robot or online")
        return res.data;
    }
    if (typeof res.data !== 'object') {
        Message.error('服务端异常！')
        return Promise.reject(res)
    }
    if (res.data.resultCode !== 200) {
        if (res.data.message) Message.error(res.data.message)
        if (res.data.resultCode === 419) {
            localSet('token', null)
            router.push({path: '/login'})
        }
        return Promise.reject(res.data)
    }
    return res.data.data;
})

export default axios
